package cc.rengu.igas.channel.esb.facade;

import cc.rengu.igas.channel.esb.facade.request.*;
import cc.rengu.igas.channel.esb.facade.response.*;
import cc.rengu.igas.channel.esb.facade.result.Result;

/**
 * 本行快捷支付
 *
 * @author wangcheng
 * 对接 ESB
 */
public interface QuickPayService {
    /**
     * 本行借记卡快捷支付
     *
     * @param debitCardQuickPayRequest 本行借记卡快捷支付请求
     * @return 本行借记卡快捷支付应答
     */
    Result<DebitCardQuickPayResponse> debitCardQuickPay(DebitCardQuickPayRequest debitCardQuickPayRequest);

    /**
     * 本行快捷支付-借记卡交易状态查询
     *
     * @param debitCardQuickPayStatusQueryRequest 本行借记卡快捷支付状态查询请求
     * @return 本行借记卡快捷支付状态查询应答
     */
    Result<DebitCardQuickPayStatusQueryResponse> debitCardQuickPayStatusQuery(DebitCardQuickPayStatusQueryRequest debitCardQuickPayStatusQueryRequest);

    /**
     * 本行快捷支付-借记卡退款
     *
     * @param debitCardQuickPayRefundRequest 本行借记卡快捷支付退款请求
     * @return 本行借记卡快捷支付退款应答
     */
    Result<DebitCardQuickPayRefundResponse> debitCardQuickPayRefund(DebitCardQuickPayRefundRequest debitCardQuickPayRefundRequest);

    /**
     * 本行贷记卡快捷支付
     *
     * @param creditCardQuickPayRequest 本行贷记卡快捷支付请求
     * @return 本行贷记卡快捷支付应答
     */
    Result<CreditCardQuickPayResponse> creditCardQuickPay(CreditCardQuickPayRequest creditCardQuickPayRequest);

    /**
     * 本行快捷支付-贷记卡交易状态查询
     *
     * @param creditCardQuickPayStatusQueryRequest 本行贷记卡快捷支付状态查询请求
     * @return 本行贷记卡快捷支付状态查询应答
     */
    Result<CreditCardQuickPayStatusQueryResponse> creditCardQuickPayStatusQuery(CreditCardQuickPayStatusQueryRequest creditCardQuickPayStatusQueryRequest);

    /**
     * 本行快捷支付-贷记卡退款
     *
     * @param creditCardQuickPayRefundRequest 本行贷记卡快捷支付退款请求
     * @return 本行贷记卡快捷支付退款应答
     */
    Result<CreditCardQuickPayRefundResponse> creditCardQuickPayRefund(CreditCardQuickPayRefundRequest creditCardQuickPayRefundRequest);
}
